<?php
declare (strict_types = 1);

namespace app\controller;

use app\model\DealModel;
use app\model\IdleComment;
use app\model\IdleModel;
use app\model\PostModel;
use app\model\UserModel;
use think\facade\Db;
use think\Request;

class Idle extends Base
{
    //获取所有闲置物品信息数据（审核通过）
    public function getAllIdleInfo(Request $request)
    {

//        parent::initialize();

//        $user_id=UserModel::getUseridByToken($request->param(('token'))); //获取用户id

//        dump($page);
        $page= $request->param('page');
        $limit= $request->param('limit');
        $idle_item_ifdeal=$request->param('idle_item_ifdeal');
        $idle_item_category=$request->param('idle_item_category');
        $idle_item_subject=$request->param('idle_item_subject');
        $idle_item_name=$request->param('idle_item_name');
        $db=new IdleModel();

        if(isset($idle_item_ifdeal) && !empty($idle_item_ifdeal)){
            $db=$db->where('idle_item_ifdeal',$idle_item_ifdeal);
        }
        if(isset($idle_item_category) && !empty($idle_item_category)){
            $db=$db->where('idle_item_category',$idle_item_category);
        }
        if(isset($idle_item_subject) && !empty($idle_item_subject)){
            $db=$db->where('idle_item_subject',$idle_item_subject);
        }
        if(isset($idle_item_name) && !empty($idle_item_name)){
            $db=$db->where('idle_item_name','like','%'.$idle_item_name.'%');
        }


        $info = $db->table('idle_item a,user b')
                   ->where('a.idle_item_check',1)
                   ->where('a.user_id = b.user_id')
                   ->page($page)->limit($limit)->select();

        $total=$db->table('idle_item a,user b')
                  ->where('a.idle_item_check',1)
                  ->where('a.user_id = b.user_id')
                  ->count('a.idle_item_id');

        return json(['code'=>1,'data'=>$info,'total'=>$total]);
    }

    //获取所有闲置物品信息数据(管理员权限的)
    public function getAllIdleInfoByAdmin(Request $request){

        $db=new IdleModel();

//        计算评论数
        $info=Db::table('idle_item')
            ->alias('a')
            ->leftJoin('idle_comment b','a.idle_item_id = b.idle_item_id')
            ->join('user c','a.user_id = c.user_id')
            ->field('a.idle_item_id,a.idle_item_name,a.idle_item_info,a.idle_item_price,a.idle_item_category,a.idle_item_subject,a.idle_item_degree,a.idle_item_time,a.idle_item_check,a.idle_item_ifdeal,a.idle_item_img,a.user_id,c.user_name,count(b.idle_item_id) as cnt')
            ->order('a.idle_item_time','desc')
            ->group('a.idle_item_id')
            ->select();


        $total=$db->table('idle_item a,user b')
            ->where('a.user_id = b.user_id')
            ->count('a.idle_item_id');


        return json(['code'=>1,'data'=>$info,'total'=>$total]);


    }


    // 根据idle_item_id获取闲置物品信息
    public function getIdleInfoByIdleID(Request $request){

        $idle_item_id=$request->param('idle_item_id');
        $idle_item=IdleModel::find($idle_item_id);
        return json(['data'=>$idle_item]);

    }


//    获取当前登录用户发布的闲置物品信息(全部)
    public function getAllIdleInfoByUserID(Request $request){
//        parent::initialize();

        $user_id=UserModel::getUseridByToken($request->param('token')); //获取用户id

        $db=new IdleModel();

//        全部
        $info = $db->table('idle_item a,user b')
            ->where('a.user_id=b.user_id')
            ->where( 'a.user_id',$user_id)
            ->order('idle_item_time','desc')
            ->select();

//        全部数量
        $total=$db->table('idle_item a,user b')
            ->where('a.user_id=b.user_id')
            ->where( 'a.user_id',$user_id)
            ->count('a.idle_item_id');

        return json(['code'=>1,'data'=>$info,'total'=>$total]);

    }

//添加闲置物品信息
    public function addIdle(Request $request){

        // 占坑：验证token
        $user_id=UserModel::getUseridByToken($_POST['user_token']); //获取用户id
        $idle_item_name=$_POST['idle_item_name'];
        $idle_item_price=$_POST['idle_item_price'];
        $idle_item_category=$_POST['idle_item_category'];
        $idle_item_degree=$_POST['idle_item_degree'];
        $idle_item_subject=$_POST['idle_item_subject'];
        $idle_item_info=$_POST['idle_item_info'];
//        没有上传图片
        if($_POST['if_img']==0){
            $idle_item_img='default_idle_img.jpg';
        }
        else{
            //上传图片文件
            $idle_img=$_FILES['idle_img'];
            //将图片存入目录
            $dir_img = FILEDIR.'idle_img/'.$user_id;

            if(!is_dir($dir_img))
            {
                mkdir($dir_img, 0777, true);
                chmod($dir_img, 0777); // 修改文件模式，所有人都有读、写、执行权限
            }
            else{
                chmod($dir_img, 0777); // 修改文件模式，所有人都有读、写、执行权限
            }

            // 接收图片文件信息
            $img_name = $idle_img['name'];

            $img_tmp_name = $idle_img['tmp_name']; //储存的临时文件名，一般是系统默认
            $img_ext = pathinfo($img_name, PATHINFO_EXTENSION); // 提取上传文件的扩展名
            // 得到唯一的文件名，防止因文件名相同而产生覆盖
            $idle_item_img = md5(uniqid('',true)).".$img_ext"; // md5加密，uniqid产生唯一id，microtime作前缀
            // 目标存放文件地址
            $img_destination = $dir_img."/".$idle_item_img;
            // 当文件上传成功时，存入临时文件夹，服务器开始判断
            if (@move_uploaded_file($img_tmp_name, $img_destination))
            {
//            @错误抑制符，不让用户看到警告
            }
            else {
                //echo "文件".$img_tmp_name."上传失败！";
                //返回消息
                return json(array(
                    'code' => 0
                ));
            }
            chmod($img_destination, 0777); // 修改文件模式，所有人都有读、写、执行权限
        }

        $data = [
            'idle_item_name' => $idle_item_name,
            'idle_item_price' => $idle_item_price,
            'idle_item_category' => $idle_item_category,
            'idle_item_subject' => $idle_item_subject,
            'idle_item_degree' => $idle_item_degree,
            'idle_item_info' => $idle_item_info,
            'idle_item_img' => $idle_item_img,
            'user_id' => $user_id

        ];

        $db=new IdleModel();
        if ($db->save($data)) {

            //返回消息 上传成功
            return json(array(
                'code' => 1
            ));
        }
        else {
            //返回消息
            return json(array(
                'code' => 0
            ));
        }



    }

    //    根据闲置物品信息id删除闲置物品信息
    public function deleteIdle(Request $request){

        $idle_item_ids= $request->param('idle_item_id');

//        批量删除
        if(is_array($idle_item_ids)){
            foreach ($idle_item_ids as $ids){
                $idle_item = IdleModel::find($ids);
                $idle_img=$idle_item['idle_item_img'];
                $user_id=$idle_item['user_id'];
                $idle_img_url= FILEDIR.'idle_img/'.$user_id.'/'.$idle_img;

                if($idle_item->delete()){
                    if($idle_img != 'default_idle_img.jpg'){
                        if( unlink($idle_img_url)) {}
                    }
                }
                else{
                    return json(array(
                        'code' => 0
                    ));
                }
            }
            return json(array(
                'code' => 1
            ));
        }
        else{
            $idle_item = IdleModel::find($idle_item_ids);
            $idle_img=$idle_item['idle_item_img'];
            $user_id=$idle_item['user_id'];
            $idle_img_url= FILEDIR.'idle_img/'.$user_id.'/'.$idle_img;

            if($idle_item->delete()){
                if($idle_img != 'default_idle_img.jpg'){
                    if( unlink($idle_img_url))
                    {
                        //返回消息
                        return json(array(
                            'code' => 1
                        ));
                    }
                }
                else
                {
                    return json(array(
                        'code' => 1
                    ));
                }

            }

            return json(array(
                'code' => 0
            ));
        }


    }

//    根据idle_item_id发表评论
    public function addComment(Request $request){

        $user_id=UserModel::getUseridByToken($request->param(('token'))); //获取用户id
        $idle_item_id=$request->param('idle_item_id');
        $idle_comment_content=$request->param('idle_comment_content');

        $idle_comment=new IdleComment();
        $data = ['idle_item_id'=>$idle_item_id,'user_id'=>$user_id,'idle_comment_content'=>$idle_comment_content];


        if($idle_comment->save($data))
        {
            return json(['code'=>1]);
        }

        return json(['code'=>0]);

    }

//    根据idle_item_id 获取评论
    public function getCommentInfoByIdleID(Request $request){

        $page= $request->param('page');
        $limit= $request->param('limit');
        $idle_item_id=$request->param('idle_item_id');
        $db=new IdleComment();

        $info = $db->table('idle_comment a,user b')
            ->where('a.idle_item_id',$idle_item_id)
            ->where('a.user_id = b.user_id')
            ->order('a.idle_comment_time','desc')
            ->page($page)->limit($limit)->select();

        $total=$db->table('idle_comment a,user b')
            ->where('a.idle_item_id',$idle_item_id)
            ->where('a.user_id = b.user_id')
            ->count('a.idle_comment_id');

        return json(['code'=>1,'data'=>$info,'total'=>$total]);

    }

    //    根据闲置物品id修改闲置物品信息
    public function updateIdle(Request $request){

        $form=$request->param('form');

        $idle_item_id=$request->param('idle_item_id');

        $idle=IdleModel::find($idle_item_id);

        $form['idle_item_check']=0;
        $form['idle_item_time']= date('Y-m-d H:i:s');

        if($idle->save($form)){

            return json(['code'=>1]);

        }

        return json(['code'=>0]);
    }

    //    获取当前登录用户所评论的闲置物品信息以及相应评论
    public function getMyIdleComment(Request $request){

        $user_id=UserModel::getUseridByToken($request->param('token')); //获取用户id

        $page= $request->param('page');
        $limit= $request->param('limit');
        $db=new IdleComment();

        $info = $db->table('idle_item a,idle_comment b,user c')
            ->where('b.user_id',$user_id)
            ->where('a.idle_item_id = b.idle_item_id')
            ->where('b.user_id = c.user_id')
            ->order('b.idle_comment_time','desc')
            ->page($page)->limit($limit)->select();

        $total=$db->table('idle_item a,idle_comment b,user c')
            ->where('b.user_id',$user_id)
            ->where('a.idle_item_id = b.idle_item_id')
            ->where('b.user_id = c.user_id')
            ->order('b.idle_comment_time','desc')
            ->count('b.idle_comment_id');

        return json(['code'=>1,'data'=>$info,'total'=>$total]);

    }

    //    根据闲置物品信息评论id删除评论
    public function deleteIdleComment(Request $request){

        $idle_comment_ids= $request->param('idle_comment_id');

        $idle=new IdleComment();

        //判断id是数组还是一个数值
        if(is_array($idle_comment_ids)){
            $condition = 'idle_comment_id in('.implode(',',$idle_comment_ids).')';
        }else{
            $condition = 'idle_comment_id='.$idle_comment_ids;
        }

        if($idle->where($condition)->delete()){
            return json(['code'=>1]);
        }

        return json(['code'=>0]);

    }

    //    根据idle_comment_id修改评论内容
    public function updateIdleComment(Request $request){

        $idle_comment_id= $request->param('idle_comment_id');
        $idle_comment_content=$request->param('idle_comment_content');

        $idle_comment= IdleComment::find($idle_comment_id);

        $data=['idle_comment_content'=>$idle_comment_content];

        if($idle_comment->save($data)){

            return json(['code'=>1]);
        }
        return json(['code'=>0]);

    }

    //根据idle_item_id修改审核情况
    public function updateCheckByIdleId(Request $request){

        $idle_item_ids= $request->param('idle_item_id');
        $idle_item_check=$request->param('idle_item_check');

        $data=['idle_item_check' => $idle_item_check];

//批量审核
        if(is_array($idle_item_ids)){
            foreach ($idle_item_ids as $ids){
                $idle_item=IdleModel::find($ids);
                if($idle_item->save($data)){
                    // 审核通过，给用户加分
                    if($idle_item_check==1){
                        $user_id = $idle_item['user_id'];
                        $user=UserModel::find($user_id);
                        $user_credit=$user['credit'];
                        $new_credit=$user_credit+5;
                        $new_data=['credit'=>$new_credit];
                        if($user->save($new_data)){}
                        else
                        {
                            return json(['code' => 0]);
                        }

                    }
                }
                else{
                    return json(['code' => 0]);
                }
            }

            return json(['code'=>1]);
        }
        else{
            $idle_item=IdleModel::find($idle_item_ids);

            if($idle_item->save($data)){

                // 审核通过，给用户加分
                if($idle_item_check==1){

                    $user_id = $idle_item['user_id'];
                    $user=UserModel::find($user_id);
                    $user_credit=$user['credit'];
                    $new_credit=$user_credit+5;
                    $new_data=['credit'=>$new_credit];
                    if($user->save($new_data)){
                        return json(['code' => 1]);
                    }
                    else
                    {
                        return json(['code' => 0]);
                    }

                }

                return json(['code'=>1]);
            }

            return json(['code'=>0]);
        }

    }

//    获取所有闲置物品信息评论
    public function getAllIdleComment(){

        $info=Db::name('idle_item')
            ->alias('a')
            ->join('idle_comment b','a.idle_item_id = b.idle_item_id')
            ->join('user c','a.user_id = c.user_id')
            ->join('user d','b.user_id = d.user_id')
            ->field('a.idle_item_name,b.idle_comment_id,
                          a.idle_item_info,a.idle_item_price,a.idle_item_category,a.idle_item_subject,
                          a.idle_item_degree,a.idle_item_check,a.idle_item_time,c.user_name as idle_user_name,
                          b.idle_comment_content,b.idle_comment_time,d.user_name as comment_user_name')
            ->select();


        return json(['code'=>1,'data'=>$info]);

    }

//获取最新发布的闲置物品信息（5）
    public function getNewIdleInfo(Request $request){

        $page= $request->param('page');
        $limit= $request->param('limit');
        $db=new IdleModel();

        $new_idle = $db->table('idle_item a,user b')
            ->where('a.user_id = b.user_id')
            ->where('a.idle_item_check',1)
            ->order('idle_item_time','desc')
            ->page($page)->limit($limit)->select();

        return json(['new_idle'=>$new_idle]);

    }

    //    获取用户发布的闲置物品信息
    public function getUserIdleInfoByUserID(Request $request){

        $user_id=$request->param(('user_id')); //获取用户id
        $db=new IdleModel();

//        全部
        $info = $db->table('idle_item a,user b')
            ->where( 'a.user_id',$user_id)
            ->where('idle_item_check',1)
            ->where('a.user_id=b.user_id')
            ->order('idle_item_time','desc')
            ->select();

//        全部数量
        $total=$db->table('idle_item a,user b')
            ->where('a.user_id=b.user_id')
            ->where( 'a.user_id',$user_id)
            ->where('idle_item_check',1)
            ->count('a.idle_item_id');

        return json(['code'=>1,'data'=>$info,'total'=>$total]);

    }


    //    计算闲置物品信息数量
    public function getIdleCnt(){

        $idle=new IdleModel();
        $idle_ok=$idle->where('idle_item_check',1)
            ->count('idle_item_id');
        $idle_nook=$idle->where('idle_item_check',2)
            ->count('idle_item_id');
        $idle=$idle->where('idle_item_check',0)
            ->count('idle_item_id');

        return json(['code' => 1,'idle_ok'=>$idle_ok,'idle_nook'=>$idle_nook,'idle'=>$idle]);

    }




    /**
     * 显示资源列表
     *
     * @return \think\Response
     */
    public function index()
    {
        //
    }

    /**
     * 显示创建资源表单页.
     *
     * @return \think\Response
     */
    public function create()
    {
        //
    }

    /**
     * 保存新建的资源
     *
     * @param  \think\Request  $request
     * @return \think\Response
     */
    public function save(Request $request)
    {
        //
    }

    /**
     * 显示指定的资源
     *
     * @param  int  $id
     * @return \think\Response
     */
    public function read($id)
    {
        //
    }

    /**
     * 显示编辑资源表单页.
     *
     * @param  int  $id
     * @return \think\Response
     */
    public function edit($id)
    {
        //
    }

    /**
     * 保存更新的资源
     *
     * @param  \think\Request  $request
     * @param  int  $id
     * @return \think\Response
     */
    public function update(Request $request, $id)
    {
        //
    }

    /**
     * 删除指定资源
     *
     * @param  int  $id
     * @return \think\Response
     */
    public function delete($id)
    {
        //
    }
}
